1. Field of the Invention
The present invention relates to a debugger used in software development and, more particularly, to a software debugger considering pipeline processing used in a hardware/software cooperation simulation environment, a system-level debugger, a debugging method, and a debugging program.
2. Description of the Related Art
A software debugger is known as a tool used for discovering behaviors or problems during software execution, and debugging in verification of functions including those of a hardware system and software operated on the hardware system at a system designing stage before hardware manufacturing. The software debugger debugs by using a source code before a program written in a high-level language such as a C language or Pascal is compiled. Using the software debugger, it is possible to operate including the setting of a stopping position (break point) on a line designated on the source code, checking of the content of register values or various variables used on the source code, and the like. Conventionally, the software debugger has had debugging only at a command level, which is designed for execution of a program of a high-level language by single software. This is because investigation of functional programs or behaviors of a program during execution has required only information obtained by a command unit of a high-level language. Accordingly, various settings on the debugger were all done by command units of high-level languages, and the debugger itself was not allowed to execute settings using units other than command units of high-level languages. For example, information displayed during the debugging was by a command unit of a high-level language, and a program counter, a step width and the like displayed during the execution of the command were all by command units of the high-level language. Also, for a break point to be given, a method of setting it during the command execution of a high-level language has been employed.
However, for the execution of debugging in a system level environment combining hardware and software, the conventional command unit of the high-level language is not sufficient. For example, when software debugging is carried out in the case of considering interruptions from outside a CPU, accurate debugging is impossible unless an execution command is at an assembly level. To improve performance by shortening software execution time, debugging including even cycle units must be carried out. It has become apparent that debugging using a command unit at assembly level or a cycle unit is now required. In other words, it is necessary to conduct debugging considering not only an operation in the CPU but also the effects of an external hardware system, which has a concept of time. A command level displayed by the debugger must also be displayed at the assembly level closer to the hardware. However, in the displaying method at the program counter, the setting method of a step width or a break point, or the like, of the conventional debugger, a problem of the impossibility of conducting sufficient debugging has been inherent for lack of time concept.